//package com.chenfan.magic.core;
//
//
//import com.chenfan.magic.constant.TokenConstant;
//import com.chenfan.magic.entity.LogAbstract;
//import com.chenfan.magic.utils.*;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.Map;
//
///**
// * Log 相关工具
// *
// * @author troy
// */
//public class LogAbstractUtil {
//
//    public static String getAppKey(HttpServletRequest request) {
//        return getAppKey(request, null);
//    }
//
//    public static String getAppKey(HttpServletRequest request, LogAbstract logAbstract) {
//        String userInfo = "", appKey = "";
//        IdcUser idcUser = SecureUtil.getUser(request);
//        // 1.从 Claim 中获取
//        if (idcUser != null) {
//            userInfo = (idcUser.getUserId() != null ? (idcUser.getUserId() + " :: ") : "") + idcUser.getUsername();
//            appKey = idcUser.getAppKey();
//        }
//        // 2.从 Header 中获取
//        if (StringKit.isBlank(appKey)) {
//            appKey = request.getHeader(TokenConstant.APP_KEY);
//        }
//        // 3.从 请求域 中获取
//        if (StringKit.isBlank(appKey)) {
//            appKey = request.getParameter(TokenConstant.APP_KEY);
////        }
//        // 4.从 POST域 中获取
//        try {
//            if (StringKit.isBlank(appKey)) {
//                appKey = WebKit.getParam(TokenConstant.APP_KEY, WebKit.getRequest()) + "";
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            if (logAbstract != null) {
//                if (StringKit.isBlank(userInfo)) {
//                    logAbstract.setCreateBy("游客");
//                }
//                logAbstract.setAppKey(appKey);
//            }
//        }
//        return appKey;
//    }
//
//    /**
//     * 向log中添加补齐request的信息
//     *
//     * @param request     请求
//     * @param logAbstract 日志基础类
//     */
//    public static void addRequestInfoToLog(HttpServletRequest request, LogAbstract logAbstract) {
//        logAbstract.setRemoteIp(WebKit.getIP(request));
//        logAbstract.setUserAgent(request.getHeader(WebKit.USER_AGENT_HEADER));
//        logAbstract.setRequestUri(UrlUtil.getPath(request.getRequestURI()));
//        logAbstract.setMethod(request.getMethod());
//        logAbstract.setParams(WebKit.getRequestParamString(request));
//        Map<String, String> headers = WebKit.getMap4Header(request);
//        //去掉 userAgent, 因为已经记录过了.
//        headers.remove("user-agent");
//        headers.remove("User-Agent");
//        logAbstract.setHeaders(FastJsonKit.map2Jsonstring(headers));
//        getAppKey(request, logAbstract);
//    }
//
//    /**
//     * 向log中添加补齐其他的信息（eg：blade、server等）
//     *
//     * @param logAbstract     日志基础类
//     * @param idcProperties 配置信息
//     * @param serverInfo      服务信息
//     */
//    public static void addOtherInfoToLog(LogAbstract logAbstract, IdcProperties idcProperties, ServerInfo serverInfo) {
//        logAbstract.setServiceId(idcProperties.getName());
//        logAbstract.setServerHost(serverInfo.getHostName());
//        logAbstract.setServerIp(serverInfo.getIpWithPort());
//        logAbstract.setEnv(idcProperties.getEnv());
//        logAbstract.setCreateTime(DateUtil.now());
//
//        //这里判断一下params为null的情况，否则blade-log服务在解析该字段的时候，可能会报出NPE
//        if (logAbstract.getParams() == null) {
//            logAbstract.setParams(StringPool.EMPTY);
//        }
//    }
//}
